package com.yuyue.springFramework.note17.example.service;

import com.yuyue.springFramework.note17.examp2.Person;
import com.yuyue.springFramework.note17.example.dao.IPersonDao;

/**
 * 服务类
 */
public class PersonService implements IPersonService{
    //有接口的情况下，此处应使用接口获取，而不能使用实现类，否则会因为类型错误导致报错
    private IPersonDao personDao;

    public void setPersonDao(IPersonDao personDao) {
        this.personDao = personDao;
    }

    @Override
    //包含多个数据库操作，且会报错
    public void testPerson(Person person) {
        //插入
        personDao.insertTable(person);

        //维护
        person.setName("不摇碧莲");
        personDao.updateTable(person);

        //查询
        Person person1 = personDao.queryForObject(person);
        System.out.println(person1);

        //报错
        System.out.println(1/0);

        //删除
        personDao.deleteTable(person1);
    }

    //复制testPerson方法，修改修饰符为 protected
    protected void testProtected(Person person) {
        //插入
        personDao.insertTable(person);

        //维护
        person.setName("一贫如洗");
        personDao.updateTable(person);

        //查询
        Person person1 = personDao.queryForObject(person);
        System.out.println(person1);

        //报错
        System.out.println(1/0);

        //删除
        personDao.deleteTable(person1);
    }

    @Override
    //调用非public方法
    //同时验证不符合方法名称和public修饰时，无事务
    public void NotTestStart(Person person){
        //满足test开头，但非public修饰
        testProtected(person);
    }
}
